// src/services/gradeService.js
// 基于 ScoreController_API.md 的成绩管理接口实现
import api from './api';

const gradeService = {
  /**
   * 添加成绩
   * @param {Object} data - { studentId, courseId, examId, totalScore, grade }
   * @returns {Promise<Object>} 见接口文档
   */
  async addScore(data) {
    return await api.post('/api/score/add', data).then(res => res.data);
  },

  /**
   * 查询单个成绩
   * @param {number} id - 成绩ID
   * @returns {Promise<Object>} 见接口文档
   */
  async getScoreById(id) {
    return await api.get(`/api/score/${id}`).then(res => res.data);
  },

  /**
   * 查询所有成绩
   * @returns {Promise<Array>} 见接口文档
   */
  async getAllScores() {
    return await api.get('/api/score/list').then(res => res.data);
  },

  /**
   * 修改成绩
   * @param {Object} data - { id, studentId, courseId, examId, totalScore, grade }
   * @returns {Promise<Object>} 见接口文档
   */
  async updateScore(data) {
    return await api.put('/api/score/update', data).then(res => res.data);
  },

  /**
   * 删除成绩
   * @param {number} id - 成绩ID
   * @returns {Promise<Object>} 见接口文档
   */
  async deleteScore(id) {
    return await api.delete(`/api/score/delete/${id}`).then(res => res.data);
  },

  /**
   * 查询课程平均分
   * @param {number} courseId - 课程ID
   * @returns {Promise<number>} 见接口文档
   */
  async getCourseAverage(courseId) {
    return await api.get('/api/score/average', { params: { courseId } }).then(res => res.data);
  },

  /**
   * 查询课程成绩分布
   * @param {number} courseId - 课程ID
   * @returns {Promise<Object>} 见接口文档
   */
  async getCourseDistribution(courseId) {
    return await api.get('/api/score/distribution', { params: { courseId } }).then(res => res.data);
  },

  /**
   * 导出成绩表（下载Excel）
   * @returns {Promise<Blob>} 文件流
   */
  async exportScores() {
    return await api.get('/api/score/export', { responseType: 'blob' });
  },

  /**
   * 获取学习行为分析
   * @param {Object} params - { studentId }
   * @returns {Promise<Object>} 参考接口文档
   */
  async fetchBehavior(params) {
    return await api.get('/api/study_analysis/behavior', { params }).then(res => res.data);
  },

  /**
   * 获取学习效果评估
   * @param {Object} params - { studentId, courseId }
   * @returns {Promise<Object>} 参考接口文档
   */
  async fetchEffect(params) {
    return await api.get('/api/study_analysis/effect', { params }).then(res => res.data);
  },

  /**
   * 获取个性化推荐
   * @param {Object} params - { studentId, courseId }
   * @returns {Promise<String>} 参考接口文档
   */
  async fetchRecommendation(params) {
    return await api.get('/api/study_analysis/recommendation', { params }).then(res => res.data);
  },
};

export default gradeService;
